home *** CD-ROM | disk | FTP | other *** search
/ Aminet 28 / Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso / Aminet / dev / misc / gms_dev.lha / GMSDev / Source / E / Blitter / DrawPixel.e < prev    next >
Encoding:
Text File  |  1998-05-30  |  2.4 KB  |  90 lines

  1. /*
  2. ** Name:      DrawPixel
  3. ** Author:    Paul Manias
  4. ** Copyright: DreamWorld Productions (c) 1998.  All rights reserved.
  5. */
  6.  
  7. MODULE 'gms/dpkernel','gms/dpkernel/dpkernel','gms/graphics/pictures'
  8. MODULE 'gms/files/files','gms/screens','gms/system/register','gms/system/modules'
  9. MODULE 'gms/input/joydata','gms/graphics/screens','gms/graphics/blitter'
  10. MODULE 'gms/blitter'
  11.  
  12. ENUM NONE,ERR_LIB,ERR_SCR,ERR_SMOD,ERR_BMOD,ERR_JOY,ERR_PIC
  13.  
  14. PROC main() HANDLE
  15.   DEF scr       = NIL :PTR TO screen,
  16.       joydata   = NIL :PTR TO joydata,
  17.       pic       = NIL :PTR TO picture,
  18.       scrmodule = NIL :PTR TO module,
  19.       bltmodule = NIL :PTR TO module,
  20.       oldx,oldy,oldcolour,xpos,ypos,
  21.       background:filename
  22.  
  23.   background := [ ID_FILENAME, 'GMS:demos/data/PIC.Green' ]:filename
  24.  
  25.   IF (dpkbase:=OpenLibrary('GMS:libs/dpkernel.library',0))=NIL THEN Raise(ERR_LIB)
  26.  
  27.   IF (scrmodule:=Init([TAGS_MODULE,NIL,       ->screen-module
  28.       MODA_NUMBER,    MOD_SCREENS,
  29.       MODA_TABLETYPE, JMP_AMIGAE,
  30.       TAGEND], NIL))=NIL THEN Raise(ERR_SMOD)
  31.       scrbase:=scrmodule.modbase
  32.  
  33.   IF (bltmodule:=Init([TAGS_MODULE,NIL,     ->blitter-module
  34.       MODA_NUMBER,    MOD_BLITTER,
  35.       MODA_TABLETYPE, JMP_AMIGAE,
  36.       TAGEND], NIL))=NIL THEN Raise(ERR_BMOD)
  37.       bltbase := bltmodule.modbase
  38.  
  39.   IF (pic:=Load(background,ID_PICTURE))=NIL THEN Raise(ERR_PIC)
  40.  
  41.   IF (scr:=Get(ID_SCREEN))=NIL THEN Raise(ERR_SCR)
  42.  
  43.   CopyStructure(pic,scr)
  44.  
  45.   IF (Init(scr,NIL))=NIL THEN Raise(ERR_SCR)
  46.  
  47.   IF (joydata := Init(Get(ID_JOYDATA),NIL))=NIL THEN Raise(ERR_JOY)
  48.  
  49.   Copy(pic.bitmap,scr.bitmap)
  50.  
  51.   Show(scr)
  52.  
  53.   oldx := xpos := 100
  54.   oldy := ypos := 100
  55.  
  56.   REPEAT
  57.     IF (oldcolour > -1) THEN DrawPixel(scr.bitmap,oldx,oldy,oldcolour)
  58.  
  59.     oldcolour := BltReadPixel(scr.bitmap,xpos,ypos)
  60.     oldx := xpos
  61.     oldy := ypos
  62.  
  63.     DrawPixel(scr.bitmap,xpos,ypos,3)
  64.     WaitAVBL()
  65.     SwapBuffers(scr)
  66.     Query(joydata)
  67.     xpos := xpos + joydata.xchange
  68.     ypos := ypos + joydata.ychange
  69.   UNTIL Mouse()=1
  70.  
  71.   Raise(NONE)
  72.  
  73. EXCEPT DO
  74.   IF scr THEN Free(scr)
  75.   IF pic THEN Free(pic)
  76.   IF joydata THEN Free(joydata)
  77.   IF scrmodule THEN Free(scrmodule)
  78.   IF bltmodule THEN Free(bltmodule)
  79.   CloseDPK()
  80.  
  81.   SELECT exception
  82.     CASE ERR_LIB;  WriteF('Couldn\at open "dpkernel.library"\n')
  83.     CASE ERR_SMOD; WriteF('Couldn\at initialize screen-module\n')
  84.     CASE ERR_SCR;  WriteF('Couldn\at open screen\n')
  85.     CASE ERR_BMOD; WriteF('Couldn\at initialize blitter-module\n')
  86.   ENDSELECT
  87.  
  88.   CleanUp(0)
  89. ENDPROC
  90.